//
//  ZHomeControllerViewModel.swift
//  swift-weibo
//
//  Created by zero on 17/3/24.
//  Copyright © 2017年 zero. All rights reserved.
//

import UIKit

import YYModel
import SDWebImage

class ZHomeControllerViewModel: NSObject {

    
    var dataList:[ZHomeModelViewModel] = [ZHomeModelViewModel]()
    
    //  加载数据
    func loadData(isPullUp:Bool,finish:@escaping ((_ res:Bool,_ count:Int) -> ())) {
        
        
        print("我好")
        // 定义两个属性
        var sinceId: Int64 = 0
        var maxId: Int64 = 0
        // 如果isPullUp==true 代表上拉加载更多
        if isPullUp {
            // 代表上拉加载更多
            maxId = dataList.last?.homeModel?.id ?? 0
            if maxId > 0 {
                // 因为微博服务器指定的规则
                maxId -= 1
            }
        }else{
            // 代表的是下拉刷新
            sinceId = dataList.first?.homeModel?.id ?? 0
        }
        
        //  检查本地是否有数据
        ZHomeDataDao.checkData(since_id: sinceId, max_id: maxId) { (res) in
            
            
            guard let resArr = res else{
                finish(false,0)
                return
            }

            //  YYModel 转模型
            let tempArray = NSArray.yy_modelArray(with: ZHomeModel.self, json: resArr) as! [ZHomeModel]
            
            var array:[ZHomeModelViewModel] = [ZHomeModelViewModel]()
            //  遍历添加
            for model in tempArray{
                
                let homeModelViewModel = ZHomeModelViewModel()
                
                homeModelViewModel.homeModel = model
                
                array.append(homeModelViewModel)
                
            }
            

            
            // 判断是否是上拉加载更过
            if isPullUp {
                self.dataList = self.dataList + array
            }else{
                // 下拉刷新
                self.dataList = array + self.dataList
            }
            
            finish(true,array.count)

            
        }
        
    }
    
    // 下载单张图片(原创微博 还是 转发微博)方法
    private func downLoadSingeImage(tempArray: [ZHomeModelViewModel], finish:@escaping (Bool)->()){
        // 创建调度组
        let group = DispatchGroup()
        // 遍历tempArray 判断是否是一张图片
        for statusViewModel in tempArray{
            
            // 判断原创微博是否是一张图片
            if statusViewModel.homeModel?.pic_urls?.count == 1 {
                // 使用调度组进行加标识
                group.enter()
                // 使用SD完成图片下载
                SDWebImageManager.shared().downloadImage(with: URL(string: statusViewModel.homeModel?.pic_urls?.first?.thumbnail_pic ?? ""), options: [], progress: nil, completed: { (image, error, _, _, _) in
                    print("原创微博单张图片下载完成")
                    // 取消调度组的标识
                    group.leave()
                })
            }
            // 判断转发微博是否是一张图片
            if statusViewModel.homeModel?.retweeted_status?.pic_urls?.count == 1 {
                // 使用调度组进行加标识
                group.enter()
                // 使用SD完成图片下载
                SDWebImageManager.shared().downloadImage(with: URL(string: statusViewModel.homeModel?.retweeted_status?.pic_urls?.first?.thumbnail_pic ?? ""), options: [], progress: nil, completed: { (image, error, _, _, _) in
                    print("转发微博单张图片下载完成")
                    // 取消调度组的表示
                    group.leave()
                })
            }
            
        }
        
        // 通过调度组来总的监听单张图片是否下载完成
        group.notify(queue: DispatchQueue.main) {
            print("---单张图片全部下载完成---")
            // 告知外界刷新UI
            finish(true)
        }
        
    }

}
